In a SCSI interface the data transfer protocol provides that the target storage system controls the data transfer between it and the requesting or initiating system. In a typical data transfer scenario, an initiator driver on the requesting system originates SCSI commands and these commands are sent to the storage system without advanced permission. Generally, however, data transfers from the requesting system to the target are not proper protocol without express or implied permission from the target. Express permission is granted using a “ready to transfer” (known as a “R2T” in SCSI terminology) command sent by the target.
Prior to a data transfer operation, SCSI allows the initiator driver on the requesting system to negotiate with the target to establish the size of permissible data chunks, known as PDU's (physical data units). The smallest PDU is typically 8 Kbytes in length, with 64 Kbytes being a larger PDU size. Once this negotiation is completed, the initiator driver sends data to the target in the agreed upon PDU size. Other than the case of implied R2T's where an actual R2T need not be sent, all other transfers of a PDU from the initiator driver requires the target to first send a R2T command granting express permission for the driver to send the PDU.
The time that an initiator driver waits between sending a PDU and receiving the next R2T command is a function of the latency in the network over which the data is being transferred. If the network has a “high” latency, as may occur in TCP/IP iSCSI protocols, there is a relatively long delay between the last PDU being sent and the next R2T arriving back at the initiator driver. This delay has the effect of lengthening the time that the overall data transfer (that is the entire block of data sought to be transferred) takes to complete. This extra time in turn often prevents the computing or other requesting system that requires the data transfer from starting other work that requires the completed transfer. Accordingly, it is desirable if these delays can be reduced so that work can be more quickly and efficiently performed by the requesting system.